import axios from 'axios';
import { ISafeRequest } from 'src/interface/ISafeRequest';
const config = require('../config');

// 底层请求接口容错处理
class SafeRequest implements ISafeRequest {
  fetch(url: string, options?: Object) {
    return new Promise((resolve, reject) => {
      // 返回请求状态码信息
      let result = {
        code: 0,
        message: '',
        data: [],
      };
      axios({
        url: url,
        baseURL: config.baseUrl,
        // proxy: {
        //   host: '127.0.0.1',
        //   port: 9000,
        //   auth: {
        //     username: 'mikeymike',
        //     password: 'rapunz3l',
        //   },
        // },
        ...options,
      })
        .then((res: any) => {
          try {
            // 其它状态处理
            // if (res.status == 200) {
            //   resolve(jsonData);
            // }

            resolve(res.data); // 返回数据
          } catch (error) {
            result.code = 1;
            result.message = '解析JSON失败';
            reject(error);
          }
        })
        .catch((error) => {
          result.code = 2;
          result.message = 'error'; // 接口500
          reject(result);
        });
    });
  }

  // url补全
  _hadleUrl(url: string): string {
    const reg = /http:/g.test(url);
    return reg ? url : `${config.baseUrl}${url}`;
  }
}

export default new SafeRequest();
